//
// Created by Administrator on 2020/7/8.
//数据的共享及保护
//静态函数成员
#include <iostream>
using namespace std;
class Point
{
public://外部接口
    Point(int x=0,int y=0):x(x),y(y)//构造函数
    {
        count++;
    }
    Point(Point &p)//复制构造函数
    {
        x=p.x;y=p.y;count++;
    }
    ~Point(){count--;}
    int getX(){return x;}
    int getY(){return y;}
    static void showCount()//change1
    {
        cout<<"Object count="<<count<<endl;
    }
private:
    int x,y;
    static int count;//静态数据成员声明,用于记录点的个数
};
int Point::count=0;//静态数据成员定义和初始化,使用类名限定
int main()
{
    Point::showCount();//输出对象个数  change2
    Point a(4,5);//定义对象a,其构造函数回使count增1
    cout<<"Point A:"<<a.getX()<<","<<a.getY();
    Point::showCount();//输出对象个数   change3

    Point b(a);//定义对象b,其构造函数回使count增1
    cout<<"Point B:"<<b.getX()<<","<<b.getY();
    Point::showCount();//输出对象个数    change4
    return 0;
}

